9. 알고리즘 교체하기
복잡한 기존 코드를 간명한 방식으로 수정
(흔히 생각하는 리팩터링)
- 목적을 달성하는 더 쉬운 코드가 있을 때
- 코드와 똑같은 기능을 제공하는 라이브러리가 있을 때
- 알고리즘을 살짝 다르게 동작하도록 바꾸고 싶을 때
절차
- 교체할 코드를 함수 하나에 모은다.
- 이 함수만을 이용해 동작을 검증하는 테스트를 마련한다.
- 대체할 알고리즘을 준비한다.
- 정적 검사를 수행한다.
- 기존 알고리즘과 새 알고리즘의 결과를 비교하는 테스트를 수행한다. 두 결과가 같다면 리팩터링이 끝난다. 그렇지 않다면 기존 알고리즘을 참고해서 새 알고리즘을 테스트하고 디버깅한다.
예시 코드
😞 Before
function foundPerson(people) {
for (let i = 0; i < people.length; i++) {
if (people[i] === 'Don') {
return 'Don'
}
if (people[i] === 'John') {
return 'John'
}
if (people[i] === 'Kent') {
return 'Kent'
}
}
return ''
}
😃 After
function foundPerson(people) {
const candidates = ['Don', 'John', 'Kent']
return people.find((p) => candidates.includes(p)) || ''
}